[アップデート] SageMakerの推論エンドポイントを0までスケールダウンできるようになりました #AWSreInvent

[アップデート] SageMakerの推論エンドポイントを0までスケールダウンできるようになりました #AWSreInvent

SageMakerの推論エンドポイントを0までスケールダウンすることで、ユースケースによってはより推論エンドポイントの料金を節約できるようになりました。
Clock Icon2024.12.04

データ事業本部 インテグレーション部 機械学習チームの鈴木です。

SageMakerの推論エンドポイントを0までスケールダウンできるようになったアナウンスがありましたのでご紹介します。

https://aws.amazon.com/jp/blogs/machine-learning/unlock-cost-savings-with-the-new-scale-down-to-zero-feature-in-amazon-sagemaker-inference/

推論エンドポイントについて

SageMakerでは機械学習モデルを推論エンドポイントにデプロイすることで、リクエストに対してリアルタイムに推論を実行することができます。

モデルは推論エンドポイント以外にもいくつかのデプロイ・実行方法がありますが、選択肢や選定方法については以下の資料が参考になります。

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2022_Amazon-SageMaker-Inference-Part-3_1014_v1.pdf

アップデートについて

推論エンドポイントのインスタンス数はAuto Scaling可能なものの、元々は最小値が1でした。今回のアップデートで最小値を0に設定できるようになり、インスタンスが不要なときは課金がかからないようになります。

0までのスケールダウンは、推論エンドポイントを作成する際に、CreateEndpointConfigMinInstanceCountを0とすることで利用できます。

例えばboto3を使う場合は以下のような実装になります。

# 以下のノートブックより2024/12/4に引用
# https://github.com/aws-samples/sagemaker-genai-hosting-examples/blob/main/scale-to-zero-endpoint/llama3-8b-scale-to-zero-autoscaling.ipynb

variant_name = "AllTraffic"
instance_type = "ml.g5.12xlarge"
model_data_download_timeout_in_seconds = 3600
container_startup_health_check_timeout_in_seconds = 3600

min_instance_count = 0 # Minimum instance must be set to 0
max_instance_count = 3

sagemaker_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ExecutionRoleArn=role,
    ProductionVariants=[
        {
            "VariantName": variant_name,
            "InstanceType": instance_type,
            "InitialInstanceCount": 1,
            "ModelDataDownloadTimeoutInSeconds": model_data_download_timeout_in_seconds,
            "ContainerStartupHealthCheckTimeoutInSeconds": container_startup_health_check_timeout_in_seconds,
            "ManagedInstanceScaling": {
                "Status": "ENABLED",
                "MinInstanceCount": min_instance_count,
                "MaxInstanceCount": max_instance_count,
            },
            "RoutingConfig": {"RoutingStrategy": "LEAST_OUTSTANDING_REQUESTS"},
        }
    ],
)

なお、リクエストがない場合のコスト最適化という観点では、サーバーレス推論という機能を使うこともできますが、GPUをサポートしていないなど制限があります。

https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html

推論エンドポイントはGPUをサポートするという点がイメージしやすい違いの一つになるかなと思います。

一方で0にスケールしてしまうと再度リクエストを処理可能になるまではリクエストは失敗扱いになるようです。そのため、ユースケースとしては開発・テスト目的やトラフィックが予測できるユースケース、失敗してもリカバリできるシステムのつくりの場合が適切です。

また、リクエストが失敗した際のため、前段にSQSを置いてキューイングするなどもよさそうです。(冒頭のAWSブログにもベストプラクティスとして記載されています。)

おわりに

SageMakerの推論エンドポイントを0までスケールダウンできるようになったアナウンスがありましたのでご紹介しました。

リクエストを再処理できるようになるまでは失敗扱いになるため、ユースケースに適するかはよく検討・設計する必要はありますが、SageMakerでは推論エンドポイントを対象とした便利な機能も多いため、それらと合わせて非常に使いやすくなる嬉しいアップデートだと思います。

SageMakerを使った機械学習システムの設計の幅もかなり広がるのではないでしょうか。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.